<!DOCTYPE html>
<style>
.outerBlock {
    border: 1px solid black;
    -webkit-transition: all 1s linear;
    -moz-transition: all 1s linear;
}

.innerBlock {    
    background-color: green;
    height: 100px;
    -webkit-transition: all 1s linear;
    -moz-transition: all 1s linear;    
}

#outer {
    width: 100px;
}

#outer.go {
    width: 500px;
}

#inner {
    width: calc(50% + 10px);
}

#innerTransition {
    width: calc(10% + 10px);
}

#innerTransition.go {
    width: calc(100% - 10px);
}

</style>

This tests that calc() expressions depending on transitioning elements behave correctly.
<div class="outerBlock" id="outer">
    <div class="innerBlock" id="inner"></div>
    <div class="innerBlock" id="innerTransition"></div>
</div>
<div id="result"></div>

<script src="../../animations/resources/animation-test-helpers.js"></script>
<script>

if (window.testRunner)
    window.testRunner.dumpAsText();

const transitioningElements = ["outer", "innerTransition"];

expectedValues = [
    // time, element, property, expected-value, tolerance
    [0.00, "inner", 'width', 60, 10],
    [0.25, "inner", 'width', 110, 10],
    [0.50, "inner", 'width', 160, 10],
    [0.75, "inner", 'width', 210, 10],
    [1.00, "inner", 'width', 260, 10],

    [0.00, "innerTransition", 'width', 20, 10],
    [0.25, "innerTransition", 'width', 70, 10],
    [0.50, "innerTransition", 'width', 165, 10],
    [0.75, "innerTransition", 'width', 305, 10],
    [1.00, "innerTransition", 'width', 490, 10],
];

runTransitionTest(expectedValues, setupTest);


function setupTest() {
    for (var i = 0; i < transitioningElements.length; i++) {
        var element = document.getElementById(transitioningElements[i]);
        element.className += " go";
    }
}


</script>
